package controller.simulationcontroller;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import view.commonview.LogicViewElement;

import model.simulationmodel.SimulationModel;

/**
 * Listener der auf jedem Eintrag des Popupmenues das die einstellbaren
 * Frequenzen beinhaltet, liegt
 * 
 * @author Team Locsi
 * 
 */
public class SetFrequencyListener implements ActionListener {

	/**
	 * Referenz auf das SimulationModel in dem die Frequenz dann gesetzt werden
	 * soll
	 */
	private SimulationModel sModel;

	/**
	 * Referenz auf die Clock (LogicViewElement) bei der die Frequenz geaendert
	 * wird.
	 */
	private LogicViewElement vElem;

	/**
	 * Dieser Konstruktor erzeutgt ein neues <code>SetFrequencyListener</code>
	 * -Objekt.
	 * 
	 * @param sModel
	 *            <code>SimulationModel</code> - Referenz auf das
	 *            <code>SimulationModel</code>
	 * @param vElem
	 *            <code>LogicViewElement</code> - Referenz auf das
	 *            <code>LogicViewElement</code>
	 */
	public SetFrequencyListener(SimulationModel sModel, LogicViewElement vElem) {
		this.sModel = sModel;
		this.vElem = vElem;
	}

	/**
	 * Diese Methode stoesst das <code>SimulationModel</code> an, die
	 * angeklickte Frequenz beim <code>LogicViewElement</code> zu setzen.
	 */
	@Override
	public void actionPerformed(ActionEvent e) {
		String command = e.getActionCommand();
		double frequence = 1000 / (Double.parseDouble(command));
		int frequency = ((int) frequence);
		sModel.setClockFrequency(vElem.getElementsName(), frequency);
	}
}
